package ar.com.mooral.data;

import java.util.Hashtable;
import android.content.Context;
import ar.com.mooral.crohn.Synchronizer;
import ar.com.mooral.pojo.BasePojo;
import ar.com.mooral.pojo.AlarmPojo;

public class Alarms extends DatabaseHelper {

    
    public Alarms(Context context) {
        super(context);        
    }

    public Fields getFields() {
        
        Fields data = new Fields();
        data.put("id", "INTEGER PRIMARY KEY AUTOINCREMENT"); 
        data.put("medicacion_id", "TEXT");
		data.put("fecha_inicio", "TEXT");
		data.put("horas", "TEXT"); // string de horas separado por |
		data.put("repetir_cantidad", "TEXT");
		data.put("repetir_unidad", "TEXT");
		data.put("uris", "TEXT");
   
		return data;
    }
    
    public String getTableName() {
        return "alarmas";
    }
    
    public String getShortTableName() {
        return "";
    }

	protected BasePojo getNewPojo() {
		return new AlarmPojo();
	}

	
	public Result save(Hashtable<String, String> data) {
		if (data.containsKey("id")) {
			return this.update(data);
		} else {
			return this.insert(data);
		}
	}

	
	public Result insert(Hashtable<String, String> data) {

		long r = this.getDb().insert(this.getTableName(), "id", this.getContentValues(data));
		this.closeDb(); // TODO Prueba

		Result result = new Result(r);
		if (r < 0) {
			result.setTitle(this.getTableName());
			result.setDescription("No fue posible insertar el nuevo registro.");
		}
		
		return result;
	}


	public Result update(Hashtable<String, String> data) {
		
		long r = this.getDb().update(this.getTableName(), this.getContentValues(data), "id = " + data.get("id"), null);
		this.closeDb(); // TODO Prueba

		Result result = new Result(r);
		if (r < 0) {
			result.setTitle(this.getTableName());
			result.setDescription("No fue posible actualizar el registro.");
		}
		
		return result;
	}

	
	public Result delete(String id) {
		
		long r = this.getDb().delete(this.getTableName(), "id = " + id, null);
		this.closeDb(); // TODO Prueba
		
		return new Result(r);
	}
	
	
	public String getLastInsertId() {
		String sql = "select MAX(id) as max_id from alarmas";
		String id = this.rawQueryForSingleValue(sql, "max_id");
		return id;
	}
		
}

